package cn.wolfcode.trip.base.service;

import cn.wolfcode.trip.base.domain.Order;
import cn.wolfcode.trip.base.domain.User;
import cn.wolfcode.trip.base.query.UserQueryObject;
import com.github.pagehelper.PageInfo;

import java.util.List;
import java.util.Map;

public interface IUserService {
    /**
     * 添加用户
     * @param user 用户对象
     * @return 主键id
     */
    int save(User user);

    /**
     * 按id查找用户
     * @param id 用户id
     * @return 用户对象
     */
    User getByUserId(Long id);

    /**
     * 根据用户id更新用户信息
     * @param user 用户对象
     * @return
     */
    int updateByUserId(User user);

    /**
     * 通过 email 和 密码 查询用户是否存在
     * @param email
     * @param password
     * @return
     */
    User selectByEmailAndPassword(String email,String password);

    /**
     * 用户注册
     * @param user 要注册的用户
     */
    void register(User user);
    User login(String email,String password);
    PageInfo<User> query(UserQueryObject qo);

    User selectCoverUrl(User user);

    Map<String,Object> getCounts(String keyword);

    User selectById(Long id);

    Map<String,Object> selectAandF(Long id);

    void saveAandF(Long userId,Long hearImgUrlId);

    void updateAandF(Long userId, Long hearImgUrlId);

    Map<String,Object> selectStateByUserId(Long userId, Long hearImgUrlId);

    /**
     * 查询个人信息
     * @param id
     * @return
     */
    User queryforUserProfilers(Long id);

    void saveUserAndTicket(Order order);

    /**
     * 查询我的订单信息
     * @param qo
     * @return
     */
    PageInfo<Order> selectOrderByUserId(UserQueryObject qo);
}
